package com.sky.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 地址簿
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AddressBook implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    //用户id
    private Long userId;

    //收货人
    private String consignee;

    //手机号
    private String phone;

    //性别 0 女 1 男
    private String sex;

    //省级区划编号
    private String provinceCode;

    //省级名称
    private String provinceName;

    //市级区划编号
    private String cityCode;

    //市级名称
    private String cityName;

    //区级区划编号
    private String districtCode;

    //区级名称
    private String districtName;

    //详细地址
    private String detail;

    //标签
    private String label;

    //是否默认 0否 1是
    private Integer isDefault;

    public String getFullAddress() {
        // 1. 用 StringBuilder 高效拼接字符串（避免 String 频繁创建对象）
        StringBuilder sb = new StringBuilder();

        // 2. 依次添加省、市、区、详细地址，非空才添加（避免 null 或空字符串）
        if (provinceName != null && !provinceName.trim().isEmpty()) {
            sb.append(provinceName.trim()); // 去空格，避免字段含多余空格
        }
        if (cityName != null && !cityName.trim().isEmpty()) {
            sb.append(cityName.trim());
        }
        if (districtName != null && !districtName.trim().isEmpty()) {
            sb.append(districtName.trim());
        }
        if (detail != null && !detail.trim().isEmpty()) {
            sb.append(detail.trim());
        }

        // 3. 若所有字段都为空，返回空字符串（或自定义默认值，如“未填写地址”）
        return sb.toString();
    }
}
